package com.tulele.vtool.service;

import com.tulele.vtool.model.BrandInfo;
import com.tulele.vtool.model.UserBrandInfo;
import com.tulele.vtool.model.combinedEntity.UserBrandCombinedInfo;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface IUserBrandInfoService {

    int addUserBrandInfo(Integer userId,
                         Integer brandId,
                         Integer brandStatus,
                         Integer effectiveStatus,
                         Date createTime,
                         Integer indexNum);

    /**
     * 获取用户设置的品牌名称
     * @param userId
     * @return
     */
    List<String> getUserBrandNameInfo(Integer userId);

    /**
     * 获取用户品牌信息
     * @param userId
     * @return
     */
    List<UserBrandCombinedInfo> getUserBrandInfo(Integer userId);

    /**
     * 获取用户品牌信息
     * @param userId
     * @return
     */
    List<UserBrandCombinedInfo> getUserBrandInfo2(Integer userId);

    /**
     * 保存用户订阅的品牌
     * @param userId
     * @param brandId
     * @return
     */
    int storeUserSubBrand(Integer userId, String brandId);

    /**
     * 切换微站
     * @param userId
     * @param brandId
     * @return
     */
    int switchUserMicroStation(Integer userId, Integer brandId);

    int updateUserBrandInfo(UserBrandInfo record);

    /**
     * 保存用户设置的品牌
     * @param userId
     * @param brandId
     * @return
     */
    int storeUserSettedBrand(Integer userId, String brandId);

    /**
     * 用户取消订阅品牌
     * @param userId
     * @param brandId
     * @return
     */
    int unSubBrandInfo(Integer userId, Integer brandId);

    /**
     * 用户订阅品牌
     * @param userId
     * @param brandId
     * @return
     */
    int subBrandInfo(Integer userId, Integer brandId);

    /**
     * 获取用户选中的品牌信息
     * @param userId
     * @return
     */
    BrandInfo getUserSelectBrandInfo(Integer userId);

    /**
     * 获取品牌订阅人数
     * @param brandId
     * @return
     */
    int getBrandSubCount(Integer brandId);

    /**
     * 用户更新品牌海报
     * @param userBrandInfo
     * @return
     */
    int uploadUserBandPosterImg(UserBrandInfo userBrandInfo);


    /**
     * 复制推荐人的品牌
     * @param userId
     * @param referer
     * @return
     */
    int copyRefererBrand(@Param("userId")Integer userId, @Param("referer")Integer referer);

    /**
     * 用户查询品牌海报
     * @param userBrandInfo
     * @return
     */
    UserBrandInfo queryUserBandPosterImg(UserBrandInfo userBrandInfo);

    /**
     * 获取用户品牌海报信息
     * @param brandId
     * @return
     */
    List<UserBrandInfo> queryUserBandPosterImgInfoList(Integer brandId);

    /**
     * 专业号要设置默认品牌
     * @param springProfilesActive
     * @param finalUserId
     * @param type(0未设置成功时不走文章品牌  1未设置成功时走文章品牌)
     * @return 是否已经设置好分类
     */
    boolean setDefaultBrand(String springProfilesActive,Integer finalUserId,int type);
}
